<?php 
/**
 * 文章管理模型
 */
class ArticleModel extends Model{
	//定义文章表数据
	public $table = 'article';
	//验证处理
	public $validate = array(
		//验证文章标题不能为空
		array('title','nonull','文章标题不能为空',2,3),
		//验证作者不能为空
		array('author','nonull','作者不能为空',2,3),
		//验证分类
		array('ll_category_cid','nonull','请选择分类',2,3),
		//验证文章
		array('editorValue','nonull','请填写文章内容',2,3)
	);
	
	//自动完成
	public $auto = array(
		//自动完成当前时间验证
		array('sendtime','_time','method',2,1),
		//自动完成ID添加验证
		array('user_uid','_uid','method',2,1),
		//自动完成分类验证
		array('attr','_attr','method',2,3),
		//自动完成缩略图验证
		array('thumb','_thumb','method',2,3),
	);
	
	public function _thumb(){
		//执行上传
		$upload = new Upload();
		//交给上传类，赋值变量
		$file = $upload->upload();
		//如果有缩略图
		if($file){
			//调用缩略图方法
			$img = new Image();
			//执行缩略
			$info = $img->thumb($file[0]['path']);
			//把数据交给文章管理器；
			return $info;
		}else{
			//如果没有缩略图获得POST提交的地址，交给文章控制器
			if($thumbH = Q('post.thumbH')) return $thumbH;
		}
		
	}
	//自动完成分类验证
	public function _attr($value){
		//有过有分类
		if($value){
			//数据处理，赋值变量
			$data = implode(',', $value);
			//返出数据
			return $data;
		}
		
	}
	//当前用户ID
	public function _uid(){
		//返出数据
		return session('aid');
	}
	//当前提交时间
	public function _time(){
		//返出数据
		return time();
	}
	
	/**
	 * 添加文章
	 */
	public function add_data(){
//		p(Q('post.'));die;
		if(!$this->create()) return false;
		//添加文章需要添加3张表
		//1.文章表
		$aid = $this->add();
		//2.文章数据表
		$data = array(
			'keywords'		=>	Q('post.keywords'),
			'description'	=>	Q('post.description'),
			'content'		=>	$_POST['editorValue'],
			'article_aid'	=>	$aid	
		);
		//调用文章数据模型，传递修改参数；
		K('ArticleData')->add_data($data);
		//3.文章标签中间表
		//多个标签执行循环添加
		foreach (Q('post.tid',array()) as $v) {
			$data = array(
				'article_aid'	=> $aid,
				'tag_tid'		=> $v,
				'category_cid'	=>	Q('post.category_cid',0,'intval')
			);
			//调用文章标签模型，传递修改参数；
			K('ArticleTag')->add_data($data);
		}
		
		return true;
	}

	/**
	 * 删除
	 * @param  [type] $cid [description]
	 * @return [type]      [description]
	 */
	public function del($aid){	
		//删除失败
		$this->error="删除失败";
		//修改回收站属性
		return $this->update(array('aid'=>$aid,'is_recycle'=>1));
	}

	/**
	 * 回收站还原
	 * @param  [type] $aid [description]
	 * @return [type]      [description]
	 */
	public function undo($aid){	
		//还原失败
		$this->error="还原失败";
		//修改回收站属性
		return $this->update(array('aid'=>$aid,'is_recycle'=>0));
	}
	/**
	 * 回收站彻底删除
	 * @return [type] [description]
	 */
	public function del_data($aid){
		//获得文章控制器传过来的参数，赋值变量
		$where = array('aid'=>$aid);
		//1.删除文章表；
		$this->where($where)->delete();
		//2.删除文章数据表
		$where = array('article_aid'=>$aid);
		//调用文章内容模型控制器，传递数据
		K('ArticleData')->del_data($where);
		//3.删除文章标签中间表
		//调用文章标签模型控制器，传递数据；
		K('ArticleTag')->del_data($where);
		
	}
	/**
	 * 编辑
	 * @param  [type] $where [description]
	 * @return [type]        [description]
	 */
	public function update_data($aid){
		//执行验证
		if(!$this->create()) return false;
		$where = array('aid'=>$aid);
		//编辑文章表
		$this->where($where)->save();
		//编辑文章内容表
		$where = array('article_aid'=>$aid);
		//调用文章内容模型，传递参数
		K('ArticleData')->update_data($where);
		//编辑文章标签表
		K('ArticleTag')->updata_data($aid,Q('post.category_cid',0,'intval'),Q('post.tid'));
		//修改成功返回收据
		return true;
	}
	
	/**
	 * 获得一条数据；
	 * @param  [type] $where [description]
	 * @param  [type] $field [description]
	 * @return [type]        [description]
	 */
	public function get_one_data($where=NULL,$field=NULL){
		//得到分类控制器里的参数，获得需要的数据，返出数据。
		return $this->where($where)->field($field)->find();
	}


}












